package DB;

import java.util.ArrayList;
import java.util.Set;

public interface AlgoDBMan 
{
	/**
	 * this function add new algorithm to the table
	 * @param path the path of the algorithm by {@link String}
	 * @return  {@link AlgoLoad} an object of the requested algorithm
	 */
	public AlgoLoad addAlg(String path);
	/**
	 * this function delete requested algorithm from the table
	 * @param path the path of the algorithm by {@link String}
	 * @return {@link Boolean} true if the deletion happened or false if not
	 */
	public boolean deleteAlgo(String path);
	/**
	 * this function return all the algorithms from the table
	 * @return {@link ArrayList} with all the paths of the algorithms
	 */
	public ArrayList<String> getAllAlgos();
	/**
	 * this function return all the algorithms that chosen by the user
	 * @return {@link ArrayList} with all the paths of the algorithms
	 */
	public ArrayList<String> getAllChosenAlgo();
	/**
	 * this function add new algorithms to the table
	 * @param paths {@link ArrayList} all the algorithms that the user add to the system
	 * @return {@link Boolean} true if the operation succeed and false if not
	 */
	public boolean addSomeAlg(ArrayList<String> paths);
	/**
	 * this function update the table according the selection of the user
	 * @param chosenAlgo {@link ArrayList} all the algorithms that the user choose
	 * @return {@link Boolean} true if the operation succeed and false if not
	 */
	public boolean selectNewAlgo(ArrayList<String> chosenAlgo);
}
